package com.info.zhiduoduo.repository.entity.entrustmentproject;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author bob
 * @since 2021-07-10
 */
@Data
@Accessors(chain = true)
@TableName("zdd_entrustment_project")
public class EntrustmentProject extends Model<EntrustmentProject> {

    private static final long serialVersionUID = 1L;

    /**
     * 发单id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 发单企业
     */
    private Integer compid;
    /**
     * 发单企业名称
     */
    private String compname;
    /**
     * 委托主体id
     */
    @TableField("principal_id")
    private Integer principalId;
    /**
     * 导入的文件原名
     */
    @TableField("origin_file_name")
    private String originFileName;
    /**
     * 文件保存路径和名称
     */
    @TableField("file_path_name")
    private String filePathName;
    /**
     * 项目备注
     */
    private String remark;
    /**
     * 项目状态 1:已创建 2:已提交 3:进行中 4:部分完成 5:全部完成
     */
    private Integer state;
    /**
     * 导入类型 1: 管理后台 2: 企业后台
     */
    @TableField("import_type")
    private Integer importType;
    /**
     * 项目类型 5:委托接单- 项目 6:委托接单-智众包项目 参考 ProjectType枚举类
     */
    @TableField("project_type")
    private Integer projectType;
    /**
     * 发单总数量
     */
    @TableField("total_item_count")
    private Integer totalItemCount;
    /**
     * 进行中的项目数量
     */
    @TableField("project_dealing_count")
    private Integer projectDealingCount;
    /**
     * 已完成的项目数量
     */
    @TableField("project_complete_count")
    private Integer projectCompleteCount;
    /**
     * 已失败的项目数量
     */
    @TableField("project_fail_count")
    private Integer projectFailCount;
    /**
     * 已完成的项目金额
     */
    @TableField("project_complete_amount")
    private BigDecimal projectCompleteAmount;
    /**
     * 已失败的项目金额
     */
    @TableField("project_fail_amount")
    private BigDecimal projectFailAmount;
    /**
     * 导入成功的项目数量
     */
    @TableField("imported_item_count")
    private Integer importedItemCount;
    /**
     * 导入失败的项目数量
     */
    @TableField("error_item_count")
    private Integer errorItemCount;
    /**
     * 导入的委托创客无效的数量
     */
    @TableField("maker_invalid_item_count")
    private int makerInvalidItemCount;
    /**
     * 导入的发单总金额
     */
    @TableField("imported_amount")
    private BigDecimal importedAmount;
    /**
     * 总含税金额
     */
    @TableField("imported_tax_inclusive_amount")
    private BigDecimal importedTaxInclusiveAmount;
    /**
     * 企业项目总应付金额
     */
    @TableField("project_total_payable_amount")
    private BigDecimal projectTotalPayableAmount;
    /**
     * 项目总自然人到账金额
     */
    @TableField("project_total_receipt_amount")
    private BigDecimal projectTotalReceiptAmount;
    /**
     * 创客团-智众包项目，保证金金额
     */
    @TableField("deposit_total_amount")
    private BigDecimal depositTotalAmount;
    /**
     * 企业开票金额=项目总应付金额-保证金金额
     */
    @TableField("project_total_invoice_amount")
    private BigDecimal projectTotalInvoiceAmount;
    /**
     * 保证金比例
     */
    @TableField("deposit_rate")
    private Double depositRate;
    /**
     * 服务费率
     */
    @TableField("imported_service_rate")
    private Double importedServiceRate;
    /**
     * 导入成功的项目数据json
     */
    @TableField("imported_item_json")
    private String importedItemJson;
    /**
     * 导入失败的项目数据json
     */
    @TableField("error_item_json")
    private String errorItemJson;
    /**
     * 导入的委托创客无效的数据json
     */
    @TableField("maker_invalid_item_json")
    private String makerInvalidItemJson;
    private Date createtime;
    private Date updatetime;

    /**
     * 实际发单企业
     */
    private Integer actualCompanyId;

    /**
     * 企业支付ID
     */
    @ApiModelProperty("企业支付ID")
    private Integer payId;

    /**
     * 主体ID
     */
    @ApiModelProperty("主体ID")
    private Integer partyId;

    @ApiModelProperty("验收证据url")
    @TableField("attachment_url")
    private String attachmentUrl;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
